package vip.ola.core.entity.code;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.LocalTime;

import static vip.ola.core.common.util.LocalDateTimeUtil.PATTERN_DATE_TIME;
import static vip.ola.core.common.util.LocalDateTimeUtil.PATTERN_TIME;

/**
 * <p>
 * 二维码信息
 * </p>
 *
 * @author faker
 * @since 2020-03-29
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("t_code_info")
public class CodeInfo implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 所属人id
     */
    private Long userId;

    /**
     * 所属人用户名
     */
    private String username;

    /**
     * 所属码商id
     */
    private Long codeBusId;

    /**
     * 所属代理id
     */
    private Long agentId;

    /**
     * 收款人姓名
     */
    private String collName;

    /**
     * 二维码类型: 1:支付宝, 2:微信
     */
    private Integer codeType;

    /**
     * 二维码存储地址
     */
    private String codePath;

    /**
     * 二维码解析后url
     */
    private String codeUrl;

    /**
     * 用户费率
     */
    private BigDecimal rate;

    /**
     * 代理费率
     */
    private BigDecimal agentRate;

    /**
     * 码商费率
     */
    private BigDecimal codeBusRate;

    /**
     * 权重,每失败一次减去1,成功加1
     */
    private Integer weight;

    /**
     * 风控模式,1-继承系统,2-自定义
     */
    private Integer riskMode;

    /**
     * 最少金额,单位元
     */
    private BigDecimal minAmount;

    /**
     * 最大金额,单位元
     */
    private BigDecimal maxAmount;

    /**
     * 一天最多收款金额,单位分
     */
    private BigDecimal dayMaxAmount;

    /**
     * 一天最多收款次数
     */
    private Integer dayMaxNum;

    /**
     * 收款开始时间
     */
    @JsonFormat(pattern = PATTERN_TIME)
    @DateTimeFormat(pattern = PATTERN_TIME)
    private LocalTime collStartTime;

    /**
     * 收款结束时间
     */
    @JsonFormat(pattern = PATTERN_TIME)
    @DateTimeFormat(pattern = PATTERN_TIME)
    private LocalTime collEndTime;

    /**
     * 总收益
     */
    private BigDecimal totalCollProfit;

    /**
     * 总收款金额,单位元
     */
    private BigDecimal totalCollAmount;

    /**
     * 总收款次数
     */
    private Integer totalCollNum;

    /**
     * 成功次数
     */
    private Integer sucNum;

    /**
     * 失败次数
     */
    private Integer failNum;

    /**
     * 状态 -1:待审核,-2审核不通过,0:停用,1:使用中
     */
    private Integer status;

    /**
     * 收款人三方系统账号
     */
    private String collThirdAccount;

    /**
     * 收款账号第三方实名姓名
     */
    private String collThirdName;

    /**
     * 收款人三方系统id
     */
    private String collThirdId;

    /**
     * 逻辑删除,0=未删除,1=已删除
     */
    private Integer deleted;

    /**
     * 备注
     */
    private String remark;

    /**
     * 订单最后时间,用于控制收款间隔时间
     */
    @JsonFormat(pattern = PATTERN_DATE_TIME)
    private LocalDateTime lastOrderTime;

    /**
     * 订单最后金额
     */
    private BigDecimal lastOrderAmount;

    /**
     * 创建者ID
     */
    private Long createId;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = PATTERN_DATE_TIME)
    @DateTimeFormat(pattern = PATTERN_DATE_TIME)
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = PATTERN_DATE_TIME)
    @DateTimeFormat(pattern = PATTERN_DATE_TIME)
    private LocalDateTime updateTime;


}
